﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BanVeXemPhim_Presentation
{
    public partial class UserControlAdminQuanLyNhanVien : UserControl
    {
        public UserControlAdminQuanLyNhanVien()
        {
            InitializeComponent();
        }

        private NhomNguoiSuDungDTO[] _dsNhomNguoiSungDung;

        public NhomNguoiSuDungDTO[] DsNhomNguoiSungDung
        {
            get { return _dsNhomNguoiSungDung; }
            set
            {
                _dsNhomNguoiSungDung = value;
                if(_dsNhomNguoiSungDung!=null)
                {
                    if (_dsNhomNguoiSungDung.Length > 0)
                    {
                        this.comboBoxNhomNguoiDung.Items.Clear();
                        int n = this._dsNhomNguoiSungDung.Length;
                        for (int i = 0; i < n; i++)
                        {
                            this.comboBoxNhomNguoiDung.Items.Add(_dsNhomNguoiSungDung[i].TenNhom);
                        }
                    }
                }
                
            }
        }

        private void buttonThemNhanVien_Click(object sender, EventArgs e)
        {
            NhanVienControl nhanVienControl = new NhanVienControl();
            NhanVienDTO nhanVienDto;
            LayThongTinNhanVien(out nhanVienDto);
            if(KiemTraThongTinNhanVien(nhanVienDto))
            {
                nhanVienControl.ThemNhanVien(nhanVienDto);
                MessageBox.Show("Thêm thành công!!");
                updateDataGridNhanVien();
            }
            else
            {
                MessageBox.Show("Thông tin nhân viên không đầy đủ");
            }
            
        }

        public bool KiemTraThongTinNhanVien(NhanVienDTO nhanVienDto)
        {
            if (nhanVienDto.Username == "" || nhanVienDto.Password == "" || nhanVienDto.HoTen == "" || nhanVienDto.NhomNguoiDung < 0)
                return false;
            return true;
        }

        private  void LayThongTinNhanVien(out NhanVienDTO infor)
        {            
            infor=new NhanVienDTO();          
            infor.HoTen = textBoxHoTen.Text;
            infor.CMND = textBoxCMND.Text;
            infor.DiaChi = textBoxDiaChi.Text;
            infor.CMND = textBoxCMND.Text;
            infor.NgaySinh =Convert.ToDateTime(dateTimePickerNgaySinh.Value.ToShortDateString());
            infor.Username = textBoxTenDangNhap.Text;
            infor.Password = textBoxMatKhau.Text;
            infor.NhomNguoiDung = LayIdNhom(this.comboBoxNhomNguoiDung.Text);            
        }

        private int LayIdNhom(string name)
        {
            int n = _dsNhomNguoiSungDung.Length;
            for (int i = 0; i < n;i++ )
            {
                if (name == _dsNhomNguoiSungDung[i].TenNhom)
                    return _dsNhomNguoiSungDung[i].IdNhomNguoiSuDung;
            }
            return -1;
        }

        private void UserControlAdminQuanLyNhanVien_Load(object sender, EventArgs e)
        {
            updateDataGridNhanVien();
        }
        private void updateDataGridNhanVien()
        {
            NhomNguoiSuDungControl nguoiSuDungControl = new NhomNguoiSuDungControl();
            this.DsNhomNguoiSungDung = nguoiSuDungControl.LayDanhSachNhomNguoiSuDung();
            NhanVienControl nhanVienControl = new NhanVienControl();
            NhanVienDTO[] dsNhanVien = nhanVienControl.LayDanhSachNhanVien();
            this.dataGridViewDanhSachNhanVien.DataSource = dsNhanVien;
            this.dataGridViewDanhSachNhanVien.Columns["IdNhanVien"].Visible = false;
            this.dataGridViewDanhSachNhanVien.Tag = dsNhanVien;
            FitSize(this.dataGridViewDanhSachNhanVien);
        }

        private void FitSize(DataGridView gv)
        {
            Size fitSize = new Size();
            fitSize.Width = gv.Width;

            // get fit height
            fitSize.Height = gv.ColumnHeadersVisible ? gv.ColumnHeadersHeight : 0;
            if (gv.Rows.Count <= 9)
                fitSize.Height += gv.Rows[0].Height * (gv.Rows.Count+1);
            else
                fitSize.Height += gv.Rows[0].Height*9;
            gv.Size = fitSize;
        }


        //Xử lý xoá nhân viên.
        private void buttonXoaNhanVien_Click(object sender, EventArgs e)
        {
            NhanVienControl nhanVienControl=new NhanVienControl();
            NhanVienDTO nhanVienDto;
            LayThongTinNhanVien(out nhanVienDto);
            nhanVienControl.XoaNhanVien(nhanVienDto);
            MessageBox.Show("Xoá thành công");
            updateDataGridNhanVien();               
        }

        //Xử lý cập nhật thông tin của nhân viên.
        private void buttonCapNhat_Click(object sender, EventArgs e)
        {
            NhanVienDTO nhanVienDto;
            LayThongTinNhanVien(out nhanVienDto);
            NhanVienControl nhanVienControl = new NhanVienControl();
            nhanVienControl.CapNhatThongTinNhanVien(nhanVienDto);
            updateDataGridNhanVien();
        }

        //Xử lý show chi tiết của datagridview
        private void dataGridViewDanhSachNhanVien_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            int index = this.dataGridViewDanhSachNhanVien.CurrentRow.Index;
            NhanVienDTO[] dsNhanVien = (NhanVienDTO[])this.dataGridViewDanhSachNhanVien.Tag;
            this.textBoxHoTen.Text = dsNhanVien[index].HoTen;
            this.textBoxCMND.Text = dsNhanVien[index].CMND;
            this.textBoxDiaChi.Text = dsNhanVien[index].DiaChi;
            this.textBoxMatKhau.Text = dsNhanVien[index].Password;
            this.textBoxTenDangNhap.Text = dsNhanVien[index].Username;
            this.dateTimePickerNgaySinh.Value = dsNhanVien[index].NgaySinh;
            this.comboBoxNhomNguoiDung.SelectedIndex = LayIndexTrongCombox(dsNhanVien[index].NhomNguoiDung);
        }

        private int LayIndexTrongCombox(int id)
        {
            int n = _dsNhomNguoiSungDung.Length;
            for (int i = 0; i < n;i++ )
            {
                if (_dsNhomNguoiSungDung[i].IdNhomNguoiSuDung == id)
                    return i;
            }
            return -1;
        }


        //
        private void buttonClear_Click(object sender, EventArgs e)
        {
            this.textBoxCMND.Text = "";
            this.textBoxHoTen.Text = "";
            this.textBoxDiaChi.Text = "";
            this.textBoxMatKhau.Text = "";
            this.textBoxTenDangNhap.Text = "";
        }







    }
}
